package cn.edu.zjgsu.ito.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import cn.edu.zjgsu.ito.util.Paginator;

public class CourierVoExample extends Paginator{
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public CourierVoExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andUserIdIsNull() {
            addCriterion("user_id is null");
            return (Criteria) this;
        }

        public Criteria andUserIdIsNotNull() {
            addCriterion("user_id is not null");
            return (Criteria) this;
        }

        public Criteria andUserIdEqualTo(Integer value) {
            addCriterion("user_id =", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotEqualTo(Integer value) {
            addCriterion("user_id <>", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdGreaterThan(Integer value) {
            addCriterion("user_id >", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("user_id >=", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdLessThan(Integer value) {
            addCriterion("user_id <", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdLessThanOrEqualTo(Integer value) {
            addCriterion("user_id <=", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdIn(List<Integer> values) {
            addCriterion("user_id in", values, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotIn(List<Integer> values) {
            addCriterion("user_id not in", values, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdBetween(Integer value1, Integer value2) {
            addCriterion("user_id between", value1, value2, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {
            addCriterion("user_id not between", value1, value2, "userId");
            return (Criteria) this;
        }

        public Criteria andSexIsNull() {
            addCriterion("sex is null");
            return (Criteria) this;
        }

        public Criteria andSexIsNotNull() {
            addCriterion("sex is not null");
            return (Criteria) this;
        }

        public Criteria andSexEqualTo(String value) {
            addCriterion("sex =", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexNotEqualTo(String value) {
            addCriterion("sex <>", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexGreaterThan(String value) {
            addCriterion("sex >", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexGreaterThanOrEqualTo(String value) {
            addCriterion("sex >=", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexLessThan(String value) {
            addCriterion("sex <", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexLessThanOrEqualTo(String value) {
            addCriterion("sex <=", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexLike(String value) {
            addCriterion("sex like", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexNotLike(String value) {
            addCriterion("sex not like", value, "sex");
            return (Criteria) this;
        }

        public Criteria andSexIn(List<String> values) {
            addCriterion("sex in", values, "sex");
            return (Criteria) this;
        }

        public Criteria andSexNotIn(List<String> values) {
            addCriterion("sex not in", values, "sex");
            return (Criteria) this;
        }

        public Criteria andSexBetween(String value1, String value2) {
            addCriterion("sex between", value1, value2, "sex");
            return (Criteria) this;
        }

        public Criteria andSexNotBetween(String value1, String value2) {
            addCriterion("sex not between", value1, value2, "sex");
            return (Criteria) this;
        }

        public Criteria andNicknameIsNull() {
            addCriterion("nickname is null");
            return (Criteria) this;
        }

        public Criteria andNicknameIsNotNull() {
            addCriterion("nickname is not null");
            return (Criteria) this;
        }

        public Criteria andNicknameEqualTo(String value) {
            addCriterion("nickname =", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotEqualTo(String value) {
            addCriterion("nickname <>", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameGreaterThan(String value) {
            addCriterion("nickname >", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameGreaterThanOrEqualTo(String value) {
            addCriterion("nickname >=", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameLessThan(String value) {
            addCriterion("nickname <", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameLessThanOrEqualTo(String value) {
            addCriterion("nickname <=", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameLike(String value) {
            addCriterion("nickname like", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotLike(String value) {
            addCriterion("nickname not like", value, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameIn(List<String> values) {
            addCriterion("nickname in", values, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotIn(List<String> values) {
            addCriterion("nickname not in", values, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameBetween(String value1, String value2) {
            addCriterion("nickname between", value1, value2, "nickname");
            return (Criteria) this;
        }

        public Criteria andNicknameNotBetween(String value1, String value2) {
            addCriterion("nickname not between", value1, value2, "nickname");
            return (Criteria) this;
        }

        public Criteria andBirthdayIsNull() {
            addCriterion("birthday is null");
            return (Criteria) this;
        }

        public Criteria andBirthdayIsNotNull() {
            addCriterion("birthday is not null");
            return (Criteria) this;
        }

        public Criteria andBirthdayEqualTo(Date value) {
            addCriterionForJDBCDate("birthday =", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayNotEqualTo(Date value) {
            addCriterionForJDBCDate("birthday <>", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayGreaterThan(Date value) {
            addCriterionForJDBCDate("birthday >", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("birthday >=", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayLessThan(Date value) {
            addCriterionForJDBCDate("birthday <", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("birthday <=", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayIn(List<Date> values) {
            addCriterionForJDBCDate("birthday in", values, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayNotIn(List<Date> values) {
            addCriterionForJDBCDate("birthday not in", values, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("birthday between", value1, value2, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("birthday not between", value1, value2, "birthday");
            return (Criteria) this;
        }

        public Criteria andRegionIsNull() {
            addCriterion("region is null");
            return (Criteria) this;
        }

        public Criteria andRegionIsNotNull() {
            addCriterion("region is not null");
            return (Criteria) this;
        }

        public Criteria andRegionEqualTo(String value) {
            addCriterion("region =", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionNotEqualTo(String value) {
            addCriterion("region <>", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionGreaterThan(String value) {
            addCriterion("region >", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionGreaterThanOrEqualTo(String value) {
            addCriterion("region >=", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionLessThan(String value) {
            addCriterion("region <", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionLessThanOrEqualTo(String value) {
            addCriterion("region <=", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionLike(String value) {
            addCriterion("region like", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionNotLike(String value) {
            addCriterion("region not like", value, "region");
            return (Criteria) this;
        }

        public Criteria andRegionIn(List<String> values) {
            addCriterion("region in", values, "region");
            return (Criteria) this;
        }

        public Criteria andRegionNotIn(List<String> values) {
            addCriterion("region not in", values, "region");
            return (Criteria) this;
        }

        public Criteria andRegionBetween(String value1, String value2) {
            addCriterion("region between", value1, value2, "region");
            return (Criteria) this;
        }

        public Criteria andRegionNotBetween(String value1, String value2) {
            addCriterion("region not between", value1, value2, "region");
            return (Criteria) this;
        }

        public Criteria andSignatureIsNull() {
            addCriterion("signature is null");
            return (Criteria) this;
        }

        public Criteria andSignatureIsNotNull() {
            addCriterion("signature is not null");
            return (Criteria) this;
        }

        public Criteria andSignatureEqualTo(String value) {
            addCriterion("signature =", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureNotEqualTo(String value) {
            addCriterion("signature <>", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureGreaterThan(String value) {
            addCriterion("signature >", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureGreaterThanOrEqualTo(String value) {
            addCriterion("signature >=", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureLessThan(String value) {
            addCriterion("signature <", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureLessThanOrEqualTo(String value) {
            addCriterion("signature <=", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureLike(String value) {
            addCriterion("signature like", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureNotLike(String value) {
            addCriterion("signature not like", value, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureIn(List<String> values) {
            addCriterion("signature in", values, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureNotIn(List<String> values) {
            addCriterion("signature not in", values, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureBetween(String value1, String value2) {
            addCriterion("signature between", value1, value2, "signature");
            return (Criteria) this;
        }

        public Criteria andSignatureNotBetween(String value1, String value2) {
            addCriterion("signature not between", value1, value2, "signature");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlIsNull() {
            addCriterion("head_portrait_url is null");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlIsNotNull() {
            addCriterion("head_portrait_url is not null");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlEqualTo(String value) {
            addCriterion("head_portrait_url =", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlNotEqualTo(String value) {
            addCriterion("head_portrait_url <>", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlGreaterThan(String value) {
            addCriterion("head_portrait_url >", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlGreaterThanOrEqualTo(String value) {
            addCriterion("head_portrait_url >=", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlLessThan(String value) {
            addCriterion("head_portrait_url <", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlLessThanOrEqualTo(String value) {
            addCriterion("head_portrait_url <=", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlLike(String value) {
            addCriterion("head_portrait_url like", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlNotLike(String value) {
            addCriterion("head_portrait_url not like", value, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlIn(List<String> values) {
            addCriterion("head_portrait_url in", values, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlNotIn(List<String> values) {
            addCriterion("head_portrait_url not in", values, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlBetween(String value1, String value2) {
            addCriterion("head_portrait_url between", value1, value2, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andHeadPortraitUrlNotBetween(String value1, String value2) {
            addCriterion("head_portrait_url not between", value1, value2, "headPortraitUrl");
            return (Criteria) this;
        }

        public Criteria andPermissionsIsNull() {
            addCriterion("permissions is null");
            return (Criteria) this;
        }

        public Criteria andPermissionsIsNotNull() {
            addCriterion("permissions is not null");
            return (Criteria) this;
        }

        public Criteria andPermissionsEqualTo(Integer value) {
            addCriterion("permissions =", value, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsNotEqualTo(Integer value) {
            addCriterion("permissions <>", value, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsGreaterThan(Integer value) {
            addCriterion("permissions >", value, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsGreaterThanOrEqualTo(Integer value) {
            addCriterion("permissions >=", value, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsLessThan(Integer value) {
            addCriterion("permissions <", value, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsLessThanOrEqualTo(Integer value) {
            addCriterion("permissions <=", value, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsIn(List<Integer> values) {
            addCriterion("permissions in", values, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsNotIn(List<Integer> values) {
            addCriterion("permissions not in", values, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsBetween(Integer value1, Integer value2) {
            addCriterion("permissions between", value1, value2, "permissions");
            return (Criteria) this;
        }

        public Criteria andPermissionsNotBetween(Integer value1, Integer value2) {
            addCriterion("permissions not between", value1, value2, "permissions");
            return (Criteria) this;
        }

        public Criteria andCourierIdIsNull() {
            addCriterion("courier_id is null");
            return (Criteria) this;
        }

        public Criteria andCourierIdIsNotNull() {
            addCriterion("courier_id is not null");
            return (Criteria) this;
        }

        public Criteria andCourierIdEqualTo(Integer value) {
            addCriterion("courier_id =", value, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdNotEqualTo(Integer value) {
            addCriterion("courier_id <>", value, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdGreaterThan(Integer value) {
            addCriterion("courier_id >", value, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("courier_id >=", value, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdLessThan(Integer value) {
            addCriterion("courier_id <", value, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdLessThanOrEqualTo(Integer value) {
            addCriterion("courier_id <=", value, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdIn(List<Integer> values) {
            addCriterion("courier_id in", values, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdNotIn(List<Integer> values) {
            addCriterion("courier_id not in", values, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdBetween(Integer value1, Integer value2) {
            addCriterion("courier_id between", value1, value2, "courierId");
            return (Criteria) this;
        }

        public Criteria andCourierIdNotBetween(Integer value1, Integer value2) {
            addCriterion("courier_id not between", value1, value2, "courierId");
            return (Criteria) this;
        }

        public Criteria andSumOrderIsNull() {
            addCriterion("sum_order is null");
            return (Criteria) this;
        }

        public Criteria andSumOrderIsNotNull() {
            addCriterion("sum_order is not null");
            return (Criteria) this;
        }

        public Criteria andSumOrderEqualTo(Integer value) {
            addCriterion("sum_order =", value, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderNotEqualTo(Integer value) {
            addCriterion("sum_order <>", value, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderGreaterThan(Integer value) {
            addCriterion("sum_order >", value, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderGreaterThanOrEqualTo(Integer value) {
            addCriterion("sum_order >=", value, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderLessThan(Integer value) {
            addCriterion("sum_order <", value, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderLessThanOrEqualTo(Integer value) {
            addCriterion("sum_order <=", value, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderIn(List<Integer> values) {
            addCriterion("sum_order in", values, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderNotIn(List<Integer> values) {
            addCriterion("sum_order not in", values, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderBetween(Integer value1, Integer value2) {
            addCriterion("sum_order between", value1, value2, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andSumOrderNotBetween(Integer value1, Integer value2) {
            addCriterion("sum_order not between", value1, value2, "sumOrder");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNull() {
            addCriterion("create_time is null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNotNull() {
            addCriterion("create_time is not null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeEqualTo(Date value) {
            addCriterion("create_time =", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotEqualTo(Date value) {
            addCriterion("create_time <>", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThan(Date value) {
            addCriterion("create_time >", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("create_time >=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThan(Date value) {
            addCriterion("create_time <", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
            addCriterion("create_time <=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIn(List<Date> values) {
            addCriterion("create_time in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotIn(List<Date> values) {
            addCriterion("create_time not in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeBetween(Date value1, Date value2) {
            addCriterion("create_time between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
            addCriterion("create_time not between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andScoreIsNull() {
            addCriterion("score is null");
            return (Criteria) this;
        }

        public Criteria andScoreIsNotNull() {
            addCriterion("score is not null");
            return (Criteria) this;
        }

        public Criteria andScoreEqualTo(String value) {
            addCriterion("score =", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreNotEqualTo(String value) {
            addCriterion("score <>", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreGreaterThan(String value) {
            addCriterion("score >", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreGreaterThanOrEqualTo(String value) {
            addCriterion("score >=", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreLessThan(String value) {
            addCriterion("score <", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreLessThanOrEqualTo(String value) {
            addCriterion("score <=", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreLike(String value) {
            addCriterion("score like", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreNotLike(String value) {
            addCriterion("score not like", value, "score");
            return (Criteria) this;
        }

        public Criteria andScoreIn(List<String> values) {
            addCriterion("score in", values, "score");
            return (Criteria) this;
        }

        public Criteria andScoreNotIn(List<String> values) {
            addCriterion("score not in", values, "score");
            return (Criteria) this;
        }

        public Criteria andScoreBetween(String value1, String value2) {
            addCriterion("score between", value1, value2, "score");
            return (Criteria) this;
        }

        public Criteria andScoreNotBetween(String value1, String value2) {
            addCriterion("score not between", value1, value2, "score");
            return (Criteria) this;
        }

        public Criteria andMoneyIsNull() {
            addCriterion("money is null");
            return (Criteria) this;
        }

        public Criteria andMoneyIsNotNull() {
            addCriterion("money is not null");
            return (Criteria) this;
        }

        public Criteria andMoneyEqualTo(String value) {
            addCriterion("money =", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyNotEqualTo(String value) {
            addCriterion("money <>", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyGreaterThan(String value) {
            addCriterion("money >", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyGreaterThanOrEqualTo(String value) {
            addCriterion("money >=", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyLessThan(String value) {
            addCriterion("money <", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyLessThanOrEqualTo(String value) {
            addCriterion("money <=", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyLike(String value) {
            addCriterion("money like", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyNotLike(String value) {
            addCriterion("money not like", value, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyIn(List<String> values) {
            addCriterion("money in", values, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyNotIn(List<String> values) {
            addCriterion("money not in", values, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyBetween(String value1, String value2) {
            addCriterion("money between", value1, value2, "money");
            return (Criteria) this;
        }

        public Criteria andMoneyNotBetween(String value1, String value2) {
            addCriterion("money not between", value1, value2, "money");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateIsNull() {
            addCriterion("user_courier_state is null");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateIsNotNull() {
            addCriterion("user_courier_state is not null");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateEqualTo(Integer value) {
            addCriterion("user_courier_state =", value, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateNotEqualTo(Integer value) {
            addCriterion("user_courier_state <>", value, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateGreaterThan(Integer value) {
            addCriterion("user_courier_state >", value, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateGreaterThanOrEqualTo(Integer value) {
            addCriterion("user_courier_state >=", value, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateLessThan(Integer value) {
            addCriterion("user_courier_state <", value, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateLessThanOrEqualTo(Integer value) {
            addCriterion("user_courier_state <=", value, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateIn(List<Integer> values) {
            addCriterion("user_courier_state in", values, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateNotIn(List<Integer> values) {
            addCriterion("user_courier_state not in", values, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateBetween(Integer value1, Integer value2) {
            addCriterion("user_courier_state between", value1, value2, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andUserCourierStateNotBetween(Integer value1, Integer value2) {
            addCriterion("user_courier_state not between", value1, value2, "userCourierState");
            return (Criteria) this;
        }

        public Criteria andIdCardDownIsNull() {
            addCriterion("id_card_down is null");
            return (Criteria) this;
        }

        public Criteria andIdCardDownIsNotNull() {
            addCriterion("id_card_down is not null");
            return (Criteria) this;
        }

        public Criteria andIdCardDownEqualTo(String value) {
            addCriterion("id_card_down =", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownNotEqualTo(String value) {
            addCriterion("id_card_down <>", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownGreaterThan(String value) {
            addCriterion("id_card_down >", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownGreaterThanOrEqualTo(String value) {
            addCriterion("id_card_down >=", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownLessThan(String value) {
            addCriterion("id_card_down <", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownLessThanOrEqualTo(String value) {
            addCriterion("id_card_down <=", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownLike(String value) {
            addCriterion("id_card_down like", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownNotLike(String value) {
            addCriterion("id_card_down not like", value, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownIn(List<String> values) {
            addCriterion("id_card_down in", values, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownNotIn(List<String> values) {
            addCriterion("id_card_down not in", values, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownBetween(String value1, String value2) {
            addCriterion("id_card_down between", value1, value2, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardDownNotBetween(String value1, String value2) {
            addCriterion("id_card_down not between", value1, value2, "idCardDown");
            return (Criteria) this;
        }

        public Criteria andIdCardUpIsNull() {
            addCriterion("id_card_up is null");
            return (Criteria) this;
        }

        public Criteria andIdCardUpIsNotNull() {
            addCriterion("id_card_up is not null");
            return (Criteria) this;
        }

        public Criteria andIdCardUpEqualTo(String value) {
            addCriterion("id_card_up =", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpNotEqualTo(String value) {
            addCriterion("id_card_up <>", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpGreaterThan(String value) {
            addCriterion("id_card_up >", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpGreaterThanOrEqualTo(String value) {
            addCriterion("id_card_up >=", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpLessThan(String value) {
            addCriterion("id_card_up <", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpLessThanOrEqualTo(String value) {
            addCriterion("id_card_up <=", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpLike(String value) {
            addCriterion("id_card_up like", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpNotLike(String value) {
            addCriterion("id_card_up not like", value, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpIn(List<String> values) {
            addCriterion("id_card_up in", values, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpNotIn(List<String> values) {
            addCriterion("id_card_up not in", values, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpBetween(String value1, String value2) {
            addCriterion("id_card_up between", value1, value2, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardUpNotBetween(String value1, String value2) {
            addCriterion("id_card_up not between", value1, value2, "idCardUp");
            return (Criteria) this;
        }

        public Criteria andIdCardNoIsNull() {
            addCriterion("id_card_no is null");
            return (Criteria) this;
        }

        public Criteria andIdCardNoIsNotNull() {
            addCriterion("id_card_no is not null");
            return (Criteria) this;
        }

        public Criteria andIdCardNoEqualTo(String value) {
            addCriterion("id_card_no =", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoNotEqualTo(String value) {
            addCriterion("id_card_no <>", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoGreaterThan(String value) {
            addCriterion("id_card_no >", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoGreaterThanOrEqualTo(String value) {
            addCriterion("id_card_no >=", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoLessThan(String value) {
            addCriterion("id_card_no <", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoLessThanOrEqualTo(String value) {
            addCriterion("id_card_no <=", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoLike(String value) {
            addCriterion("id_card_no like", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoNotLike(String value) {
            addCriterion("id_card_no not like", value, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoIn(List<String> values) {
            addCriterion("id_card_no in", values, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoNotIn(List<String> values) {
            addCriterion("id_card_no not in", values, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoBetween(String value1, String value2) {
            addCriterion("id_card_no between", value1, value2, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andIdCardNoNotBetween(String value1, String value2) {
            addCriterion("id_card_no not between", value1, value2, "idCardNo");
            return (Criteria) this;
        }

        public Criteria andReadNameIsNull() {
            addCriterion("read_name is null");
            return (Criteria) this;
        }

        public Criteria andReadNameIsNotNull() {
            addCriterion("read_name is not null");
            return (Criteria) this;
        }

        public Criteria andReadNameEqualTo(String value) {
            addCriterion("read_name =", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameNotEqualTo(String value) {
            addCriterion("read_name <>", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameGreaterThan(String value) {
            addCriterion("read_name >", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameGreaterThanOrEqualTo(String value) {
            addCriterion("read_name >=", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameLessThan(String value) {
            addCriterion("read_name <", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameLessThanOrEqualTo(String value) {
            addCriterion("read_name <=", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameLike(String value) {
            addCriterion("read_name like", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameNotLike(String value) {
            addCriterion("read_name not like", value, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameIn(List<String> values) {
            addCriterion("read_name in", values, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameNotIn(List<String> values) {
            addCriterion("read_name not in", values, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameBetween(String value1, String value2) {
            addCriterion("read_name between", value1, value2, "readName");
            return (Criteria) this;
        }

        public Criteria andReadNameNotBetween(String value1, String value2) {
            addCriterion("read_name not between", value1, value2, "readName");
            return (Criteria) this;
        }

        public Criteria andUsernameIsNull() {
            addCriterion("username is null");
            return (Criteria) this;
        }

        public Criteria andUsernameIsNotNull() {
            addCriterion("username is not null");
            return (Criteria) this;
        }

        public Criteria andUsernameEqualTo(String value) {
            addCriterion("username =", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameNotEqualTo(String value) {
            addCriterion("username <>", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameGreaterThan(String value) {
            addCriterion("username >", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameGreaterThanOrEqualTo(String value) {
            addCriterion("username >=", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameLessThan(String value) {
            addCriterion("username <", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameLessThanOrEqualTo(String value) {
            addCriterion("username <=", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameLike(String value) {
            addCriterion("username like", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameNotLike(String value) {
            addCriterion("username not like", value, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameIn(List<String> values) {
            addCriterion("username in", values, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameNotIn(List<String> values) {
            addCriterion("username not in", values, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameBetween(String value1, String value2) {
            addCriterion("username between", value1, value2, "username");
            return (Criteria) this;
        }

        public Criteria andUsernameNotBetween(String value1, String value2) {
            addCriterion("username not between", value1, value2, "username");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeIsNull() {
            addCriterion("last_login_time is null");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeIsNotNull() {
            addCriterion("last_login_time is not null");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeEqualTo(Date value) {
            addCriterion("last_login_time =", value, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeNotEqualTo(Date value) {
            addCriterion("last_login_time <>", value, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeGreaterThan(Date value) {
            addCriterion("last_login_time >", value, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("last_login_time >=", value, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeLessThan(Date value) {
            addCriterion("last_login_time <", value, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeLessThanOrEqualTo(Date value) {
            addCriterion("last_login_time <=", value, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeIn(List<Date> values) {
            addCriterion("last_login_time in", values, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeNotIn(List<Date> values) {
            addCriterion("last_login_time not in", values, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeBetween(Date value1, Date value2) {
            addCriterion("last_login_time between", value1, value2, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andLastLoginTimeNotBetween(Date value1, Date value2) {
            addCriterion("last_login_time not between", value1, value2, "lastLoginTime");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreIsNull() {
            addCriterion("integral_score is null");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreIsNotNull() {
            addCriterion("integral_score is not null");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreEqualTo(Integer value) {
            addCriterion("integral_score =", value, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreNotEqualTo(Integer value) {
            addCriterion("integral_score <>", value, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreGreaterThan(Integer value) {
            addCriterion("integral_score >", value, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreGreaterThanOrEqualTo(Integer value) {
            addCriterion("integral_score >=", value, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreLessThan(Integer value) {
            addCriterion("integral_score <", value, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreLessThanOrEqualTo(Integer value) {
            addCriterion("integral_score <=", value, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreIn(List<Integer> values) {
            addCriterion("integral_score in", values, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreNotIn(List<Integer> values) {
            addCriterion("integral_score not in", values, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreBetween(Integer value1, Integer value2) {
            addCriterion("integral_score between", value1, value2, "integralScore");
            return (Criteria) this;
        }

        public Criteria andIntegralScoreNotBetween(Integer value1, Integer value2) {
            addCriterion("integral_score not between", value1, value2, "integralScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreIsNull() {
            addCriterion("credit_score is null");
            return (Criteria) this;
        }

        public Criteria andCreditScoreIsNotNull() {
            addCriterion("credit_score is not null");
            return (Criteria) this;
        }

        public Criteria andCreditScoreEqualTo(Integer value) {
            addCriterion("credit_score =", value, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreNotEqualTo(Integer value) {
            addCriterion("credit_score <>", value, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreGreaterThan(Integer value) {
            addCriterion("credit_score >", value, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreGreaterThanOrEqualTo(Integer value) {
            addCriterion("credit_score >=", value, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreLessThan(Integer value) {
            addCriterion("credit_score <", value, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreLessThanOrEqualTo(Integer value) {
            addCriterion("credit_score <=", value, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreIn(List<Integer> values) {
            addCriterion("credit_score in", values, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreNotIn(List<Integer> values) {
            addCriterion("credit_score not in", values, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreBetween(Integer value1, Integer value2) {
            addCriterion("credit_score between", value1, value2, "creditScore");
            return (Criteria) this;
        }

        public Criteria andCreditScoreNotBetween(Integer value1, Integer value2) {
            addCriterion("credit_score not between", value1, value2, "creditScore");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeIsNull() {
            addCriterion("user_register_time is null");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeIsNotNull() {
            addCriterion("user_register_time is not null");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeEqualTo(Date value) {
            addCriterion("user_register_time =", value, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeNotEqualTo(Date value) {
            addCriterion("user_register_time <>", value, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeGreaterThan(Date value) {
            addCriterion("user_register_time >", value, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("user_register_time >=", value, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeLessThan(Date value) {
            addCriterion("user_register_time <", value, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeLessThanOrEqualTo(Date value) {
            addCriterion("user_register_time <=", value, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeIn(List<Date> values) {
            addCriterion("user_register_time in", values, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeNotIn(List<Date> values) {
            addCriterion("user_register_time not in", values, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeBetween(Date value1, Date value2) {
            addCriterion("user_register_time between", value1, value2, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserRegisterTimeNotBetween(Date value1, Date value2) {
            addCriterion("user_register_time not between", value1, value2, "userRegisterTime");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumIsNull() {
            addCriterion("user_order_sum is null");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumIsNotNull() {
            addCriterion("user_order_sum is not null");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumEqualTo(Integer value) {
            addCriterion("user_order_sum =", value, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumNotEqualTo(Integer value) {
            addCriterion("user_order_sum <>", value, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumGreaterThan(Integer value) {
            addCriterion("user_order_sum >", value, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumGreaterThanOrEqualTo(Integer value) {
            addCriterion("user_order_sum >=", value, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumLessThan(Integer value) {
            addCriterion("user_order_sum <", value, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumLessThanOrEqualTo(Integer value) {
            addCriterion("user_order_sum <=", value, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumIn(List<Integer> values) {
            addCriterion("user_order_sum in", values, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumNotIn(List<Integer> values) {
            addCriterion("user_order_sum not in", values, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumBetween(Integer value1, Integer value2) {
            addCriterion("user_order_sum between", value1, value2, "userOrderSum");
            return (Criteria) this;
        }

        public Criteria andUserOrderSumNotBetween(Integer value1, Integer value2) {
            addCriterion("user_order_sum not between", value1, value2, "userOrderSum");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}